package com.share.controller;

import cn.hutool.core.lang.Validator;
import cn.hutool.extra.mail.MailUtil;
import com.share.model.User;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class TestController {

    @Test
    public void send() {
//        String content = username + "看起来您正在尝试使用新设备登录。此处是您访问帐户所需的 Steam 令牌验证码：" + emailCode + "不是您？\n" +
//                "您会收到这封电子邮件，是由于有人试图用您的 QQ邮箱 帐户注册我们的网盘。切勿与任何人分享此代码。\n";
        MailUtil.send("545479176@qq.com", "小姜客服", "测试", false);
    }

    @Test
    public void verify() {
        String phone = "15735883540";
        if (!Validator.isMobile(phone)) {
            throw new IllegalArgumentException("该手机号格式不正确");
        }

    }

    @Test
    public void select() {
        try {
            listPath(new Path("/15735889031/"));
        } catch (IOException | URISyntaxException | InterruptedException e) {
            throw new RuntimeException(e);
        }
    }

    public void listPath(Path path) throws IOException, URISyntaxException, InterruptedException {
        org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();
//        conf.set("fs.defaultFS", "hdfs://node1:9000");     // 指定 HDFS访问
        conf.setLong("dfs.blocksize", 104857600);     // 配置每个数据块的最大大小
        // 抢救时间：10 * 心跳时间(5s) + 2 * 断联检查时间(10s) = 70s
        conf.setInt("dfs.namenode.heartbeat.recheck-interval", 10000);         // 断连检查时间，10s
        FileSystem fileSystem = FileSystem.get(new URI("hdfs://node1:9000"), conf, "root");

        FileStatus fileStatus = fileSystem.getFileStatus(path);

        if (fileStatus.isDirectory()) {         // 是目录的话执行递归
            System.out.println("这是文件夹" + fileStatus.getPath());
            FileStatus[] fileStatuses = fileSystem.listStatus(fileStatus.getPath());
            for (FileStatus status : fileStatuses) {        // 再次递归文件夹下的文件和文件夹去进行判断
                listPath(status.getPath());     // 递归获取该目录下的文件
            }
        } else {
            System.out.println("这是文件" + fileStatus.getPath());
        }
    }
}
